/**
 * Created by qiushaohua on 14-8-19.
 */
define(["app"], function (app) {

    var deps = ["$sce", "$timeout"];

    function directive($sce, $timeout) {
        return {
            templateUrl: "views/common/player/AudioPlayer.html",
            replace: true,
            scope: {
                src: "@"
            },
            link: function ($scope, elem) {

                $scope.canPlay = canPlay();
                
                if ($scope.canPlay) {
                    // 处理播放完成之后不能再进行播放的问题
                	$timeout(function() {
                		var audio = elem.find("audio"),
                		    rawAudio = audio[0];
                		// 下面几个事件都直接使用one, 因为这个只有处理一次就可以, 后面是可以重复播放了的
                		audio.one("ended", function() {
                		    // 当第一次播放完成之后
                			audio.one("play", function() {
                			    // 当再次点击播放的时候
                			    // 重新加载一下
                				rawAudio.load(rawAudio.currentSrc);
                				audio.one("loadeddata", function() {
                				    // 当加载完成, 再进行播放
                				    rawAudio.play();
                				});
                			});
                		});
                	}, 0);
                } else {
                	$timeout(function() {
                		// modal 的div 上的fade in 样式, 会使得QuickTime 播放器无法显示, 
                		// 所以这里把这两个样式给移除掉了
                		elem.closest(".modal").removeClass("fade in");
                	}, 0);
                }

                $scope.sce = function (url) {
                    return $sce.trustAsResourceUrl(url);
                };
            }
        };
    }

    function canPlay() {
        // 暂时只有Chrome 直接支持3gp 格式的播放
        return navigator.userAgent.indexOf("Chrome") !== -1;
    }

    directive.$inject = deps;
    return app.lazy.directive("fcAudioPlayer", directive);
});